#include"process.h"
      #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char s[102] = {0};  // 进度条字符数组
const char spinner[] = "|/-\\";  // 旋转光标序列

void process(double _total) {
    srand((unsigned int)time(NULL));
    double total = _total;   // 总下载量（double类型）
    double current = 0.0;   // 当前下载量（double类型）
    double percent = 0.0;   // 百分比（改为double以保留两位小数）
    int spin_idx = 0;

    while (current < total) {
        // 随机增量（1~5的整数转换为double）
        double step = (double)(rand() % 5 + 1);
        current += step;
        if (current > total) {
            current = total;
        }

        // 计算百分比（保留两位小数精度）
        percent = (current / total) * 100.0;
        
        // 更新进度条（根据百分比整数部分填充，确保进度条与百分比同步）
        int bar_length = (int)percent;  // 取百分比整数部分作为进度条长度
        for (int i = 0; i <= bar_length; i++) {
            s[i] = '=';
        }
        s[bar_length + 1] = '\0';

        // 输出格式：进度条 + 下载量 + 两位小数百分比 + 旋转光标
        printf("%-100s [ %.1f / %.1f ] %.2f %% %c \r", 
               s, current, total, percent, spinner[spin_idx]);
        fflush(stdout);

        // 旋转光标更新
        spin_idx = (spin_idx + 1) % 4;
        usleep(20000);
    }

    // 完成状态输出（强制显示100.00%）
    printf("%-100s [ %.1f / %.1f ] 100.00 %% ✓\n", s, total, total);
    printf("下载完成！\n");
}
